package fr.umlv.ig.model;

/**
 * Represents a model for a Line.
 * @author Jenseric Catbgan
 * @author William Choy
 *
 */
public interface LineModel {
	/**
	 * Returns the number of stations on the Line.
	 * @param line the line
	 * @return the number of stations on the line.
	 */
	public int getCountStation(Line line);
	
	/**
	 * Returns the number of trains on the line.
	 * @param line the line.
	 * @return the number of trains on the line.
	 */
	public int getCountTrain(Line line);
	
	/**
	 * Returns the number of itineraries on the Line.
	 * @param line the line.
	 * @return the number of itineraries on the line.
	 */
	public int getCountItinerary(Line line);
	
	/**
	 * Returns true if the line is selected else false.
	 * @param line the line.
	 * @return true if the line is selected else false.
	 */
	public boolean isSelected(Line line);

	/**
	 * Returns the station of the line with a specific index.
	 * @param line the line.
	 * @param index the index of the station to find.
	 * @return the station of the line in the index index.
	 */
	public Station getStation(Line line, int index);
	
	/**
	 * Returns the train of the line in the index index. 
	 * @param line the line
	 * @param index the index of the  train to find.
	 * @return the train of the line in the index index.
	 */
	public Train getTrain(Line line,int index);
	
	/**
	 * Returns the itinerary of the line in the index index.
	 * @param line the line
	 * @param index the index of the itinerary to find.
	 * @return the {@link Itinerary} of the Line in the index index.
	 */
	public Itinerary getItinerary(Line line, int index);
	
}
